#pragma once

#include<iostream>
#include<string>

using namespace std;
struct Location
{
	Location(double _x = 0, double _y = 0, double _z = 0, int _second = 0):x(_x), y(_y), z(_z), second(_second) {}
	int second;
	double x;
	double y;
	double z;

	Location operator+(const Location &rf) const
	{
		Location location;
		location.second = second;
		location.x  = x+ rf.x; location.y= y+ rf.y; location.z = z + rf.z;
		return location;
	}
	Location operator*(const double& weight) const
	{
		Location local;
		local.second = second;
		local.x = x * weight; local.y = y * weight; local.z = z * weight;
		return local;
	}
	Location operator/(const double& weight) const
	{
		Location local;
		local.second = second;
		local.x = x / weight; local.y = y / weight; local.z = z / weight;
		return local;
	}
	friend ostream& operator<<(ostream& out, Location& location)
	{
		out << location.second << "," << location.x << "," << location.y<<"," << location.z;
		return out;
	}
};

struct Size
{
	Size(double _x=0, double _y=0, double _z=0) :x(_x), y(_y), z(_z) {}

	double x;
	double y;
	double z;


	friend ostream& operator<<(ostream& out, Size& size)
	{
		out << size.x << "	" << size.y << "	" << size.z << "\n";
	}
};